package com.wulian.common.util;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



/**
 * ExcelUtil工具类实现功能: 导出时传入list<T>,即可实现导出为一个excel,其中每个对象Ｔ为Excel中的一条记录.
 * 
 * 1.实体属性配置了注解就能导出到excel中,每个属性都对应一列.<br>
 * 2.列名称可以通过注解配置. <br> 
 * 3.导出到哪一列可以通过注解配置.<br>
 * 4.鼠标移动到该列时提示信息可以通过注解配置. <br>
 * 5.用注解设置只能下拉选择不能随意填写功能. <br>
 * 6.用注解设置是否只导出标题而不导出内容,这在导出内容作为模板以供用户填写时比较实用.
 * 
 * XXX 无法插入行数据 例如合计那一行.暂未添加合并行、列的功能。 
 */
public class ExcelUtil<T> {
	private static Logger logger = LoggerFactory.getLogger(ExcelUtil.class);
	Class<T> clazz;
	public ExcelUtil(Class<T> clazz) {
		this.clazz = clazz;
	}


	/**
	 * 将文件转换成HSSFWorkbook
	 * @param excleFile
	 * @return
	 * @throws FileNotFoundException
	 * @throws IOException
	 */
	public HSSFWorkbook getExcleWorkBook(InputStream excleFile) {
		HSSFWorkbook wb;
		try {
			POIFSFileSystem fs = new POIFSFileSystem(excleFile);
			wb = new HSSFWorkbook(fs);
			return wb;
		} catch (IOException e) {
			logger.error("文件异常"+e.getMessage(),e);
		}
		return null;
	}
	
	/**
	 * 将文件转换成HSSFWorkbook
	 * @param excleFile
	 * @return
	 * @throws FileNotFoundException
	 * @throws IOException
	 */
	public XSSFWorkbook getExcleXSSWorkBook(InputStream excleFile) {
		XSSFWorkbook wb;
		try {
			wb = new XSSFWorkbook(excleFile);
			return wb;
		} catch (IOException e) {
			logger.error("文件异常"+e.getMessage(),e);
		}
		return null;
	}
	

}
